package sel.me.spring.boot159.web.extension.postprocessor;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;

/**
 * Spring容器初始化时，从资源中读取到bean的相关定义后，保存在BeanDefinitionMap
 * ，在实例化bean的操作就是依据这些bean的定义来做的，而在实例化之前
 * ，Spring允许我们通过自定义扩展来改变bean的定义，定义一旦变了，后面的实例也就变了
 * ，而beanFactory后置处理器，即BeanFactoryPostProcessor就是用来改变bean定义的。
 *
 * @author shenenlu 2021年05月18日 下午17:06:33
 */
public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
    @Override
    public void postProcessBeanFactory(
            ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {

//

//        for (int i = 0; i < 10; i++) {
//            BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(Person.class);
//            builder.addPropertyValue("name", "sfz_" + i);
//            configurableListableBeanFactory.regisregisterBeanDefinition("person" + i, builder.getBeanDefinition());
//        }
    }
}
